Providing backup and restore services to network attached appliances in a network

ABSTRACT

Provided are a computer program product, system, and method for providing backup and restore services to network attached appliances in a network. Configuration settings comprising configuration settings used in a network attached appliance are gathered and a unique identifier for the network attached appliance is determined. A backup request is generated including the configuration settings, the unique identifier, and a backup operation code. The backup request is broadcasted on the network to be received by the backup servers to store the configuration settings for the unique identifier.

BACKGROUND OF THE INVENTION 1. Field of the Invention

The present invention relates to a computer program product, system, andmethod for providing backup and restore services to network attachedappliances in a network.

2. Description of the Related Art

The Internet of Things comprises a network of physical objects embeddedwith electronics and network connectivity to communicate on a network,such as the Internet. Appliances within the Internet of Things are oftenmanually configured with configuration settings. Over time, users mayforget the specific configuration settings and the configuration processfor these specialized appliances.

There is a need in the art for improved techniques to provideconfiguration settings network attached appliances and devices that arepart of the Internet of Things.

SUMMARY

Provided are a computer program product, system, and method forproviding backup and restore services to network attached appliances ina network. Configuration settings comprising configuration settings usedin a network attached appliance are gathered and a unique identifier forthe network attached appliance is determined. A backup request isgenerated including the configuration settings, the unique identifier,and a backup operation code. The backup request is broadcasted on thenetwork to be received by the backup servers to store the configurationsettings for the unique identifier.

In a further backup server embodiment, broadcasts of backup requests arereceived from network attached appliances in a network, wherein each ofthe backup requests includes a unique identifier and configurationsettings of the network attached appliance broadcasting the backuprequest. For each of the received backup requests, the configurationsettings in the backup request for the network attached appliance arestored and the stored configuration settings are associated with theunique identifier included in the backup request. A broadcast isreceived of a restore request including a restore unique identifier ofone of the network attached appliances in the network. A determinationis made as to whether one of the stored configuration settings isassociated with the unique identifier matching the restore uniqueidentifier. A restore reply is generated including the storedconfiguration settings associated with the unique identifier matchingthe restore unique identifier and the restore unique identifier inresponse to determining the stored configuration settings associatedwith the unique identifier match the restore unique identifier. Thegenerated restore reply is broadcasted in the network to be received ata plurality of the network attached appliances including the networkattached appliance having the restore unique identifier.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an embodiment of a network environment includingnetwork attached appliances.

FIG. 2 illustrates an embodiment of a configuration setting entry in aconfiguration setting database.

FIG. 3 illustrates an embodiment of a backup/restore request.

FIG. 4 illustrates an embodiment of a restore reply to a restorerequest.

FIG. 5 illustrates an embodiment of operations for a network attachedappliance to backup configuration settings in the network.

FIG. 6 illustrates an embodiment of operations for a network attachedappliance to generate a restore request to restore configurationsettings.

FIG. 7 illustrates an embodiment of operations for a backup server toprocess a backup or restore request from a network attached appliance.

FIG. 8 illustrates an embodiment of operations for a network attachedappliance to process a restore reply to a restore request.

FIG. 9 illustrates a computing environment in which the components ofFIG. 1 may be implemented.

DETAILED DESCRIPTION

Devices and network attached appliances part of the Internet of Thingsmay not be readily configured. Users may have difficulty remembering aparticular configuration or the process to perform the configuration.Further, backup solutions that require communication with a pre-definedglobal backup server may not be suitable to store configuration settingsfor network attached appliances because the appliance manufacturer maynot be able to provide long term commitments for server locations.

Described embodiments provide techniques for allowing network attachedappliances, such as devices and objects of the Internet of Things, tobackup and restore configuration settings by broadcasting backup andrestore requests to backup servers in a network designed to acceptbackup and restore requests from different clients that adhere to acommon backup and restore protocol. The backup and restore operationsand communications among network attached appliances and backup serversmay be session free, requiring no registration or authentication. Thebackup servers receiving the broadcasts may each independently backupconfiguration settings from the network attached appliances and provideconfiguration settings to restore requests from a network attachedappliance. Because backup and restore requests are broadcasted tonumerous backup servers independently providing the backup services, anyof the backup servers that are available may respond to backup andrestore requests for configuration settings when needed.

FIG. 1 illustrates an embodiment of a network computing environmenthaving a plurality of network attached appliances 100 ₁, 100 ₂ . . . 100_(m) and backup servers 102 ₁, 102 ₂ . . . 102 _(n) that communicateover a network 104. Each of the backup servers 102 ₁, 102 ₂ . . . 102_(n) may backup configuration settings in each of the network attachedappliances 100 ₁, 100 ₂ . . . 100 _(m). Each of the network attachedappliances 100 ₁, 100 ₂ . . . 100 _(m) include, as shown with respect tonetwork attached appliance 100 _(i), an embedded system 106 includingconfiguration settings 108 used to configure appliance hardware 110,comprising the device specific hardware of the network attachedappliance 100 _(i); a unique identifier 112 of the network attachedappliance 100 _(i) to uniquely identify the network attached appliance100 _(i) in the network; a backup/restore client 114 to performoperations to backup and restore the configuration settings 108 withrespect to the backup servers 102 ₁, 102 ₂ . . . 102 _(n); and a networkadaptor 116 to connect to the network 104. The network attachedappliances 100 ₁, 100 ₂ . . . 100 _(m) may comprise any type of consumeror other device that may connect to a network 104. For instance thenetwork attached appliances 100 ₁, 100 ₂ . . . 100 _(m) may compriseobjects characterized as part of the Internet of Things, such asdevices, vehicles, buildings, embedded with electronics, softwaresensors and network connectivity to allow those objects to communicateon the network 104.

The embedded system 106 may be implemented using a processor executing acomputer program in a storage device, such as described with respect toFIG. 10. Alternatively, the embedded system 106 may be implemented in anapplication specific integrated circuit (ASIC), such as a system-on-achip design.

Each of the backup servers 102 ₁, 102 ₂ . . . 102 _(n) include, as shownwith respect to backup server 102 _(i), a backup/restore server 118 anda configuration setting database 200 to store configuration settingsbroadcasted by the network attached appliances 100 ₁, 100 ₂ . . . 100_(m).

The backup servers 102 ₁, 102 ₂ . . . 102 _(n) may store theconfiguration setting database 120 in a storage 122 comprising one ormore storage devices known in the art, such as a solid state storagedevice (SSD) comprised of solid state electronics, EEPROM (ElectricallyErasable Programmable Read-Only Memory), flash memory, flash disk,Random Access Memory (RAM) drive, storage-class memory (SCM), PhaseChange Memory (PCM), resistive random access memory (RRAM), spintransfer torque memory (STM-RAM), conductive bridging RAM (CBRAM),magnetic hard disk drive, optical disk, tape, etc. The storage devicesmay further be configured into an array of devices, such as Just a Bunchof Disks (JBOD), Direct Access Storage Device (DASD), Redundant Array ofIndependent Disks (RAID) array, virtualization device, etc. Further, thestorage devices may comprise heterogeneous storage devices fromdifferent vendors or from the same vendor.

The network 104 may comprise a local area network (LAN), storage areanetwork (SAN), wide area network (WAN), the Internet, an Intranet, etc.

In certain embodiments, the backup/restore client 114 and thebackup/restore server 118 may operate according to a common Internet ofThings protocol that all appliances and backup servers may utilize toprovide common backup and recovery services. For instance, themanufacturers or distributors of the network attached appliances 100 ₁,100 ₂ . . . 100 _(m) may contract with operators of backup servers 102₁, 102 ₂ . . . 102 _(n) who provide backup/restore services for networkattached appliances 100 ₁, 100 ₂ . . . 100 _(m) of different types fromdifferent vendors so that the backup and restore services may beubiquitous within the Internet of Things. Further, the backup andrestore operations and communications among network attached appliancesand backup servers may be session free, requiring no registration orauthentication.

FIG. 2 illustrates an embodiment of a configuration setting entry 200_(i) in the configuration setting database 200, such as a databaserecord, for each configuration setting 108 communicated by the networkattached appliances 100 ₁, 100 ₂ . . . 100 _(m), and includes a networkattached appliance unique ID 202, which comprises the unique ID 112 ofthe network attached appliance 100 _(i) providing the configurationsetting 200 that is backed up, and a timestamp 206 of the backed-upconfiguration settings 200. The unique ID may comprise a MAC address,Internet Protocol (IP address), universally unique identifier (UUID), adevice type, a serial number, etc. The unique ID may be defined by theuser of the network attached appliance 100 ₁, 100 ₂ . . . 100 _(m).

FIG. 3 illustrates an embodiment of a backup/restore request 300generated by the backup/restore client 114 and communicated to thebackup servers 102 ₁, 102 ₂ . . . 102 _(n), and includes a service classheader 302 identifying a service class that indicates the request ispart of a backup service, and devices, such as the backup servers 102 ₁,102 ₂ . . . 102 _(n) and network attached appliances 100 ₁, 100 ₂ . . .100 _(m), may listen for broadcasts having this service class associatedwith the backup service;; a request type 304, such as backup or restore;a unique identifier 306 of the network attached appliance 100 ₁, 100 ₂ .. . 100 _(m) initiating the backup or restore request; configurationsettings 308 at the network attached appliance 100 ₁, 100 ₂ . . . 100_(m) identified by the unique ID 306 if the request type 304 is a backuprequest; and a timestamp 310 of the provided configuration settings 308.For a restore request to restore configuration settings, the requesttype 304 would indicate restore and there would be no configurationsettings 308 nor timestamp 310 included.

With the backup request 300 of FIG. 3, the configuration settings tobackup are tagged with the header and unique ID of the network attachedappliance 100 ₁, 100 ₂ . . . 100 _(m) generating the backup request 300.

FIG. 4 illustrates an embodiment of a restore reply 400 generated by thebackup/restore server 118 in response to a restore request 300 from anetwork attached appliance 100 ₁, 100 ₂ . . . 100 _(m), and includes theservice class header 402 used to identify those devices participating inthe backup/restore services; a restore code 404 identifying the reply400 as having information for a restore; a network attached applianceunique ID 406 of the network attached appliance 100 ₁, 100 ₂ . . . 100_(m) that initiated the restore request; the configuration settings 408to restore at the requesting network attached appliance 100 ₁, 100 ₂ . .. 100 _(m); and a timestamp 410 of the configuration settings 408.

FIG. 5 illustrates an embodiment of operations the backup/restore client114 in the network attached appliances 100 ₁, 100 ₂ . . . 100 _(m)performs to backup configuration settings 108 in the backup servers 102₁, 102 ₂ . . . 102 _(n). The operations of FIG. 5 may be periodicallyinitiated at the network attached appliances 100 ₁, 100 ₂ . . . 100 _(m)to periodically backup the configuration settings 108. Upon initiating(at block 500) a backup of the configuration settings 108, configurationsettings 108 are gathered (at block 502) at the network attachedappliance 100, and the unique ID 112 is determined (at block 504). Abackup request 300 _(B) is generated (at block 506) including a serviceclass header 302, a backup request type 304, the determined unique ID306, the gathered configuration settings 308, and the timestamp 310. Thegenerated backup request 300 _(B) is broadcasted (at block 508) throughthe network adaptor 116 to the backup servers 102 ₁, 102 ₂ . . . 102_(n) in the network.

In one embodiment, the backup request 300 _(B) may be broadcasted on thenetwork 104 to be received by every device in the network 104. In afurther embodiment, the backup request 300 _(B) may be transmitted usingdifferent transmission protocols, such as a transmission to an addressedbackup server or a multicast, so that devices in the network 104 thatare members of the service class for backup services indicated in theservice class header 302 would receive and process the backup request300. Thus, in described embodiments, those devices, such as networkattached appliances 100 ₁, 100 ₂ . . . 100 _(m) and backup servers 102₁, 102 ₂ . . . 102 _(n), participating in the backup/restore serviceclass would receive and process backup requests 300 _(B).

FIG. 6 illustrates an embodiment of operations the backup/restore client114 in the network attached appliances 100 ₁, 100 ₂ . . . 100 _(m)performs to generate a restore request 300 _(R). The restore request 300_(R) may be initiated by a user wanting to restore the configurationsettings after a failure or upon replacing a network attached appliance100 ₁, 100 ₂ . . . 100 _(m). Upon initiating (at block 600) theoperation to generate a restore request, the backup/restore client 114generates (at block 602) a configuration restore request 300 _(R)including the service class 302, network attached appliance unique ID306 of the network attached appliance 100 _(i) wanting to restore itsconfiguration settings, and a restore request code in the request type304. The generated restore request 300 _(R) is broadcasted (at block604) through the network adaptor 116, which would reach the backupservers 102 ₁, 102 ₂ . . . 102 _(n) in the network 104 listening forsuch request. In this way, multiple of the backup servers 102 ₁, 102 ₂ .. . 102 _(n) may receive the restore request 300 _(R), and thebroadcasting network attached appliance 100 _(i) is not aware of thebackup servers 102 ₁, 102 ₂ . . . 102 _(n) that have received andbacked-up the restore request 300 _(R).

FIG. 7 illustrates an embodiment of operations performed by thebackup/restore server 118 executing in the backup servers 102 ₁, 102 ₂ .. . 102 _(n) to process requests from the network attached appliances100 ₁, 100 ₂ . . . 100 _(m), including a backup request 300 _(B) andrestore request 300 _(R). Multiple of the backup servers 102 ₁, 102 ₂ .. . 102 _(n) may process and perform backup and restore operations forone backup 300 _(B) and restore 300 _(R) request broadcasted from one ofthe network attached appliances 100 ₁, 100 ₂ . . . 100 _(m). Thebackup/restore server 118 may listen for broadcasts of backup andrestore requests 300 from the network attached appliances 100 ₁, 100 ₂ .. . 100 _(m). Upon receiving (at block 700) a communication, if (atblock (702) the communication does not indicate a service class 302associated with backup services, i.e., does not comprise a backup 300_(B)or restore 300 _(R) request, then the communication is discarded (atblock 704) and not further processed. If (at block 702) the serviceclass identified in the header 302 is associated with backup services,then the backup/restore server 118 determines (at block 706) whether thebackup services request type 304 is a backup or restore request. If abackup request, then the backup/restore server 118 generates (at block708) a configuration setting entry 200 _(i) in the configuration settingdatabase 200 including the network attached appliance unique ID 306,configuration settings 308, and timestamp 310 in the backup request 300in fields 202, 204, and 206, respectively, to store in the configurationsetting database 200.

If (at block 706), the backup services request is a restore request, asindicated in the request type 304, then the backup/restore server 118determines (at block 710) whether there is a configuration settingsentry 200 _(i) in the database 200 having a unique identifier 202 thatmatches the unique identifier 306 in the restore request 300 _(R). If(at block 710) there is no configuration setting entry 200 _(i) for theunique identifier 306 in the restore request 300 _(R), i.e., for therequesting network attached appliance 100 _(i), then the restore request300 _(R) is discarded (at block 712).

If (at block 710) there is a configuration setting entry 200 _(i) forthe unique identifier 306 in the restore request 300 _(R), then thebackup/restore server 118 generates (at block 714) a restore reply 400including the service class header 402 indicating backup services, therestore code 404; and in fields 406, 408, and 410 the unique networkattached appliance ID 202, 306 in the configuration setting entry 200_(i) and restore request 300 _(R), the configuration settings 204, andthe timestamp 206 in the configuration setting entry 200 _(i) in theconfiguration setting database 200. The generated restore reply 400 isbroadcasted (at block 716) to the devices in the network, including thenetwork attached appliances 100 ₁, 100 ₂ . . . 100 _(m), in the network104. In this way, multiple of the network attached appliances 100 ₁, 100₂ . . . 100 _(m) may receive the restore reply 400, and the broadcastingbackup server 102 _(i) is not aware of the different network attachedappliances 100 ₁, 100 ₂ . . . 100 _(m) that will receive and process therestore reply 400.

With the operations of FIG. 7, each of the backup servers 102 ₁, 102 ₂ .. . 102 _(n) may independently listen for backup 300 _(B)and restore 300_(R) requests and store the configuration settings broadcasted frommultiple of the network attached appliances 100 ₁, 100 ₂ . . . 100 _(m)in backup requests 300 that are broadcasted to all the backup servers102 ₁, 102 ₂ . . . 102 _(n) that are intended to receive the backuprequests 300 _(B), such as in the same service class. In this way, thenetwork attached appliances 100 ₁, 100 ₂ . . . 100 _(m) are not aware ofwhich backup servers 102 ₁, 102 ₂ . . . 102 _(n) in the network 104received and stored the configuration settings 108. Further, whenbroadcasting a restore request 300 _(R), the backup servers 102 ₁, 102 ₂. . . 102 _(n) are not aware of the network attached appliances 100 ₁,100 ₂ . . . 100 _(m) that have received the restore reply 400 andapplied the configuration settings 409.

FIG. 8 illustrates an embodiment of operations performed by thebackup/restore client 114 in the network attached appliances 100 ₁, 100₂ . . . 100 _(m) to process a received restore reply 400 from one of thebackup servers 102 ₁, 102 ₂ . . . 102 _(n). The backup/restore client114 may listen for broadcasts of restore replies 400 from backup serversin the network 104. Since each of the backup servers may independentlyrespond to a restore request 300 _(R), the network attached appliances100 ₁, 100 ₂ . . . 100 _(m) may receive multiple restore replies 400from the backup servers 102 ₁, 102 ₂ . . . 102 _(n) for the same restorerequest 300 _(R). Upon receiving (at block 800) the restore reply 400,if (at block 802) the service class header 402 in the restore reply 400does not indicate the service class associated with the backup services,then the restore reply 400 is discarded (at block 804) and not furtherprocessed. If (at block 802) the service class identified in the header402 is associated with the backup services, then the backup/restoreclient 114 determines (at block 806) whether the unique ID 406 in therestore reply 400 matches the unique ID 112 of the receiving networkattached appliance 100 _(i). If (at block 806) there is not a match,then control proceeds to block 904 to discard the restore reply 400,because it is intended for a different network attached appliance. If(at block 806) there is a match and the restore reply 400 is intendedfor the receiving network attached appliance 100 _(i), then adetermination is made (at block 808) whether the timestamp 410 for theconfiguration settings 408 in the restore reply 400 is greater than thetimestamp of the last applied configuration settings 108 in the networkattached appliance 100 _(i). If (at block 808) the timestamp is notgreater, meaning the current installed configuration settings 108 arecurrent, then control proceeds to block 904 to discard the restore reply400. If (at block 808) the timestamp 410 indicates the configurationsettings 408 are more current than the currently installed configurationsettings 108, then the configuration settings 408 are applied (at block810) to the network attached appliance 100,. If there are no installedvalid configuration settings 108, such as if the configuration settings108 have been corrupted, then the configuration settings 408 in therestore reply 400 are automatically applied.

The operations to apply the configuration settings 408 at block 808 maybe alternatively performed by applying the configuration settings 408 inthe first received restore reply 400 ₁, and then discarding anysubsequently received restore replies.

With the operations of FIG. 8, the backup/restore client 114 may processrestore replies 400 from multiple backup servers 102 ₁, 102 ₂ . . . 102_(n) responding to the same broadcasted restore request 300 _(R).

Described embodiments provide techniques for an embedded backup/restoresystem in network attached appliances to backup and restoreconfiguration settings to multiple backup servers in the network, suchthat a single backup and restore may be broadcasted to multiple of thebackup servers on the network to independently process. Each of thebackup servers may independently store configuration settings for eachof the network attached appliances to provide redundancy in the storageof the configuration settings. The embedded system of the describedembodiments may thus broadcast backup and restore requests without beingaware which of the one or more backup servers will process, and thus beable to process multiple responses to a single restore request from thedifferent backup servers in the network that may simultaneously receivebackup and restore requests from the network attached appliances. Thebackup and restore operations and communications among network attachedappliances and backup servers may be session free, requiring noregistration or authentication.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Java, Smalltalk, C++ or the like,and conventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The letter designators, such as i and n, used to designate a number ofinstances of an element may indicate a variable number of instances ofthat element when used with the same or different elements.

The computational components of FIG. 1 including the network attachedappliances 100 ₁, 100 ₂ . . . 100 _(m) and backup servers 102 ₁, 102 ₂ .. . 102 _(n) may be implemented in one or more computer systems, such asthe computer system 902 shown in FIG. 9. Computer system/server 902 maybe described in the general context of computer system executableinstructions, such as program modules, being executed by a computersystem. Generally, program modules may include routines, programs,objects, components, logic, data structures, and so on that performparticular tasks or implement particular abstract data types. Computersystem/server 902 may be practiced in distributed cloud computingenvironments where tasks are performed by remote processing devices thatare linked through a communications network. In a distributed cloudcomputing environment, program modules may be located in both local andremote computer system storage media including memory storage devices.

As shown in FIG. 9, the computer system/server 902 is shown in the formof a general-purpose computing device. The components of computersystem/server 902 may include, but are not limited to, one or moreprocessors or processing units 904, a system memory 906, and a bus 908that couples various system components including system memory 906 toprocessor 904. Bus 908 represents one or more of any of several types ofbus structures, including a memory bus or memory controller, aperipheral bus, an accelerated graphics port, and a processor or localbus using any of a variety of bus architectures. By way of example, andnot limitation, such architectures include Industry StandardArchitecture (ISA) bus, Micro Channel Architecture (MCA) bus, EnhancedISA (EISA) bus, Video Electronics Standards Association (VESA) localbus, and Peripheral Component Interconnects (PCI) bus.

Computer system/server 902 typically includes a variety of computersystem readable media. Such media may be any available media that isaccessible by computer system/server 902, and it includes both volatileand non-volatile media, removable and non-removable media.

System memory 906 can include computer system readable media in the formof volatile memory, such as random access memory (RAM) 910 and/or cachememory 912. Computer system/server 902 may further include otherremovable/non-removable, volatile/non-volatile computer system storagemedia. By way of example only, storage system 913 can be provided forreading from and writing to a non-removable, non-volatile magnetic media(not shown and typically called a “hard drive”). Although not shown, amagnetic disk drive for reading from and writing to a removable,non-volatile magnetic disk (e.g., a “floppy disk”), and an optical diskdrive for reading from or writing to a removable, non-volatile opticaldisk such as a CD-ROM, DVD-ROM or other optical media can be provided.In such instances, each can be connected to bus 908 by one or more datamedia interfaces. As will be further depicted and described below,memory 906 may include at least one program product having a set (e.g.,at least one) of program modules that are configured to carry out thefunctions of embodiments of the invention.

Program/utility 914, having a set (at least one) of program modules 916,may be stored in memory 906 by way of example, and not limitation, aswell as an operating system, one or more application programs, otherprogram modules, and program data. Each of the operating system, one ormore application programs, other program modules, and program data orsome combination thereof, may include an implementation of a networkingenvironment. The components of the computer 902 may be implemented asprogram modules 916 which generally carry out the functions and/ormethodologies of embodiments of the invention as described herein. Thesystems of FIG. 1 may be implemented in one or more computer systems902, where if they are implemented in multiple computer systems 902,then the computer systems may communicate over a network.

Computer system/server 902 may also communicate with one or moreexternal devices 918 such as a keyboard, a pointing device, a display920, etc.; one or more devices that enable a user to interact withcomputer system/server 902; and/or any devices (e.g., network card,modem, etc.) that enable computer system/server 902 to communicate withone or more other computing devices. Such communication can occur viaInput/Output (I/O) interfaces 922. Still yet, computer system/server 902can communicate with one or more networks such as a local area network(LAN), a general wide area network (WAN), and/or a public network (e.g.,the Internet) via network adapter 924. As depicted, network adapter 924communicates with the other components of computer system/server 902 viabus 908. It should be understood that although not shown, other hardwareand/or software components may be used in conjunction with computersystem/server 902. Examples, include, but are not limited to: microcode,device drivers, redundant processing units, external disk drive arrays,RAID systems, tape drives, and data archival storage systems, etc.

The terms “an embodiment”, “embodiment”, “embodiments”, “theembodiment”, “the embodiments”, “one or more embodiments”, “someembodiments”, and “one embodiment” mean “one or more (but not all)embodiments of the present invention(s)” unless expressly specifiedotherwise.

The terms “including”, “comprising”, “having” and variations thereofmean “including but not limited to”, unless expressly specifiedotherwise.

The enumerated listing of items does not imply that any or all of theitems are mutually exclusive, unless expressly specified otherwise.

The terms “a”, “an” and “the” mean “one or more”, unless expresslyspecified otherwise.

Devices that are in communication with each other need not be incontinuous communication with each other, unless expressly specifiedotherwise. In addition, devices that are in communication with eachother may communicate directly or indirectly through one or moreintermediaries.

A description of an embodiment with several components in communicationwith each other does not imply that all such components are required. Onthe contrary a variety of optional components are described toillustrate the wide variety of possible embodiments of the presentinvention.

When a single device or article is described herein, it will be readilyapparent that more than one device/article (whether or not theycooperate) may be used in place of a single device/article. Similarly,where more than one device or article is described herein (whether ornot they cooperate), it will be readily apparent that a singledevice/article may be used in place of the more than one device orarticle or a different number of devices/articles may be used instead ofthe shown number of devices or programs. The functionality and/or thefeatures of a device may be alternatively embodied by one or more otherdevices which are not explicitly described as having suchfunctionality/features. Thus, other embodiments of the present inventionneed not include the device itself.

The foregoing description of various embodiments of the invention hasbeen presented for the purposes of illustration and description. It isnot intended to be exhaustive or to limit the invention to the preciseform disclosed. Many modifications and variations are possible in lightof the above teaching. It is intended that the scope of the invention belimited not by this detailed description, but rather by the claimsappended hereto. The above specification, examples and data provide acomplete description of the manufacture and use of the composition ofthe invention. Since many embodiments of the invention can be madewithout departing from the spirit and scope of the invention, theinvention resides in the claims herein after appended.

1-7. (canceled)
 8. A computer program product for backing-upconfiguration settings in network attached appliances in a network, thecomputer program product comprising a computer readable storage mediumhaving computer readable program code to perform operations, theoperations comprising: receiving broadcasts of backup requests from thenetwork attached appliances in the network, wherein each backup requestof the backup requests includes a unique identifier and configurationsettings of the network attached appliance broadcasting the backuprequest; for each of the received backup requests, storing theconfiguration settings in the backup request for the network attachedappliance and associating the stored configuration settings with theunique identifier included in the backup request; receiving a broadcastof a restore request including a restore unique identifier of one of thenetwork attached appliances in the network; determining whether one ofthe stored configuration settings is associated with the uniqueidentifier matching the restore unique identifier; generating a restorereply including the stored configuration settings associated with theunique identifier matching the restore unique identifier and the restoreunique identifier in response to determining the stored configurationsettings associated with the unique identifier match the restore uniqueidentifier; and broadcasting the generated restore reply in the networkto be received at a plurality of the network attached appliancesincluding the network attached appliance having the restore uniqueidentifier.
 9. The computer program product of claim 8, wherein thebackup requests include a timestamp of the configuration settings,wherein the operations further comprise: associating the timestamp inthe backup requests with the stored configuration settings, wherein therestore reply includes the timestamp of the configuration settingsincluded in the restore reply.
 10. The computer program product of claim8, wherein the operations further comprise: discarding the restorerequest without replying to the restore request in response todetermining that there is no stored configuration settings associatedwith the unique identifier matching the restore unique identifier. 11.The computer program product of claim 8, wherein the operations furthercomprise: listening for broadcasts having a specified service class,wherein the received broadcasts that are processed comprise the backuprequests indicating the specified service class. 12-14. (canceled)
 15. Asystem for backing-up configuration settings in network attachedappliances in a network, comprising: a processor; and a computerreadable storage medium having computer readable program code, theoperations comprising: receiving broadcasts of backup requests from thenetwork attached appliances in the network, wherein each backup requestof the backup requests includes a unique identifier and configurationsettings of the network attached appliance broadcasting the backuprequest; for each of the received backup requests, storing theconfiguration settings in the backup request for the network attachedappliance and associating the stored configuration settings with theunique identifier included in the backup request; receiving a broadcastof a restore request including a restore unique identifier of one of thenetwork attached appliances in the network; determining whether one ofthe stored configuration settings is associated with the uniqueidentifier matching the restore unique identifier; generating a restorereply including the stored configuration settings associated with theunique identifier matching the restore unique identifier and the restoreunique identifier in response to determining the stored configurationsettings associated with the unique identifier match the restore uniqueidentifier; and broadcasting the generated restore reply in the networkto be received at a plurality of the network attached appliancesincluding the network attached appliance having the restore uniqueidentifier.
 16. The system of claim 15, wherein the operations furthercomprise: discarding the restore request without replying to the restorerequest in response to determining that there is no stored configurationsettings associated with the unique identifier matching the restoreunique identifier.
 17. The system of claim 15, wherein the operationsfurther comprise: listening for broadcasts having a specified serviceclass, wherein the received broadcasts that are processed comprise thebackup requests indicating the specified service class. 18-20.(canceled)
 21. A method for backing-up configuration settings in aserver, comprising: receiving broadcasts of backup requests from networkattached appliances in a network, wherein each backup request of thebackup requests includes a unique identifier and configuration settingsof the network attached appliance broadcasting the backup request; foreach of the received backup requests, storing the configuration settingsin the backup request for the network attached appliance and associatingthe stored configuration settings with the unique identifier included inthe backup request; receiving a broadcast of a restore request includinga restore unique identifier of one of the network attached appliances inthe network; determining whether one of the stored configurationsettings is associated with the unique identifier matching the restoreunique identifier; generating a restore reply including the storedconfiguration settings associated with the unique identifier matchingthe restore unique identifier and the restore unique identifier inresponse to determining the stored configuration settings associatedwith the unique identifier match the restore unique identifier; andbroadcasting the generated restore reply in the network to be receivedat a plurality of the network attached appliances including the networkattached appliance having the restore unique identifier.
 22. The methodof claim 21, wherein the operations further comprise: discarding therestore request without replying to the restore request in response todetermining that there is no stored configuration settings associatedwith the unique identifier matching the restore unique identifier. 23.The method of claim 21, wherein the operations further comprise:listening for broadcasts having a specified service class, wherein thereceived broadcasts that are processed comprise the backup requestsindicating the specified service class.
 24. The system of claim 15,wherein the backup requests include a timestamp of the configurationsettings, wherein the operations further comprise: associating thetimestamp in the backup requests with the stored configuration settings,wherein the restore reply includes the timestamp of the configurationsettings included in the restore reply.
 25. The method of claim 21,wherein the backup requests include a timestamp of the configurationsettings, wherein the operations further comprise: associating thetimestamp in the backup requests with the stored configuration settings,wherein the restore reply includes the timestamp of the configurationsettings included in the restore reply.